﻿using FanaticRock.Core.AudioPlay;
using FanaticRock.Core.AudioPlay.Events;

namespace FanaticRock.Core.ServiceInterfaces
{
    public interface IAudioPlayService
    {
        event EventHandler<AudioPlayStateChangedEventArgs> PlayStateChanged;

        event EventHandler<AudioProgressUpdateEventArgs> AudioProgressUpdated;

        event EventHandler MediaPlayEnd;

        AudioPlayStateEnum GetState();

        Task<bool> Open(Uri uri);

        Task Play();

        Task Pause();

        Task Refresh();

        Task SetPosition(TimeSpan position);

        Task Replay();

        void SetVolume(double volumeRatio);

        double GetVolume();
    
    }
}
